package com.tao.interface_;

public class InterfaceDetail {
    public static void main(String[] args) {
        //new IA();  1.接口不能实例化，因为接口类本身就是一个抽象的类

        System.out.println(IB.n1);//6.1.证明接口中的属性是static的
        //7.接口中属性的访问形式：接口名.属性名

        //IB.n1 = 20;  6.2.不能赋值，证明接口中的方法是final的
    }
}

interface IA{
    void AAA();
    //2.接口中的方法都是public的，所以public可以省略不写
    //接口中的抽象方法可以不写abstract，不写方法体就是抽象方法
    void BBB();
}

interface IB{
    int n1 = 10;//6.接口中的属性默认都是public static final的
                //实际上就是public static final int n1 = 10;必须初始化，因为它是final类型的
    void CCC();
}

interface IC extends IB,IA{//8.接口不能继承其他的类，但是可以继承多个其他的接口
    default void DDD(){
        System.out.println(IB.n1);
    }
}

//public interface ID{}
interface ID{}//9.接口的修饰符只能是public和默认，在单独的只有接口的接口类中可以写public

class A implements IA{
    @Override
    public void AAA() {}

    @Override
    public void BBB() {}
    //3.一个普通类要实现接口，就必须把该接口里面所有的方法都实现了，缺一不可
}

abstract  class B implements IA{
    //4.这是一个抽象类，它要实现IA接口，可以不用实现接口中的方法
}

class C implements IA,IB{//5.一个类可以同时实现多个接口，同时也要实现每个接口里面的每个方法
    @Override
    public void AAA() {}

    @Override
    public void BBB() {}

    @Override
    public void CCC() {}
}